﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Configuration;
using System.Data.SqlClient;
namespace GestorDeFlotasDesktop.Classes
{
    public class Usuarios
    {
        public Usuario getUsuario(Usuario oUsuario)
        {
            return oUsuario;
        }
        public int insertUsuario(Usuario oUsuario)
        {
            List<SqlParameter> parameterList = new List<SqlParameter>();

            parameterList.Add(new SqlParameter("@usuario",oUsuario.strUsername));
            parameterList.Add(new SqlParameter("@password", SqlInterface.Encriptar(oUsuario.strPassword)));

            return SqlInterface.ExecuteNonQuery("SQUIRTLE.spCrearUsuario", parameterList);
        }
        public int insertRoles(Usuario oUsuario)
        {
            
            int aux = 0;
            for (int a = 0; a < oUsuario.lstRoles.Count; a++)
            {
                List<SqlParameter> parameterList = new List<SqlParameter>();
                parameterList.Add(new SqlParameter("@usuario", oUsuario.strUsername));
                parameterList.Add(new SqlParameter("@rol", oUsuario.lstRoles[a].intCodigo));
                aux = SqlInterface.ExecuteNonQuery("SQUIRTLE.spAltaUsuarioRol", parameterList);
                if (aux != 1)
                {
                    return aux;
                }
            }
            return aux;
        }
        public int deleteRol(string username, int codRol)
        {
            List<SqlParameter> parameterList = new List<SqlParameter>();
            parameterList.Add(new SqlParameter("@usuario", username));
            parameterList.Add(new SqlParameter("@rol", codRol));
            return SqlInterface.ExecuteNonQuery("SQUIRTLE.spBajaUsuarioRol", parameterList);
        }
        public int delete(string username)
        {
            List<SqlParameter> parameterList = new List<SqlParameter>();
            parameterList.Add(new SqlParameter("@usuario", username));
            return SqlInterface.ExecuteNonQuery("SQUIRTLE.spBajarUsuario", parameterList);
        }
        public List<Rol> getRoles(string username)
        {
            List<Rol> lstRoles = new List<Rol>();
            Roles oRoles = new Roles();
            return oRoles.getRolesUsuario(username);
        }
        public List<Usuario> getAllUsuarios()
        {
            
            SqlDataReader rdrLector;
            rdrLector = SqlInterface.ExecuteReader("SQUIRTLE.spGetAllUsuarios");
            List<Usuario> lstUsuario = new List<Usuario>();
            if (rdrLector.HasRows)
            {
                
                while(rdrLector.Read())
                {
                    Usuario oUsuario = new Usuario();
                    oUsuario.strPassword = rdrLector.GetString(rdrLector.GetOrdinal("USUARIO_PASSWORD"));
                    oUsuario.strUsername = rdrLector.GetString(rdrLector.GetOrdinal("USUARIO_USERNAME"));
                    oUsuario.blnHabilitado = rdrLector.GetBoolean(rdrLector.GetOrdinal("USUARIO_HABILITADO"));
                    lstUsuario.Add(oUsuario);
                }
            }
            return lstUsuario;
        }
        public int update(Usuario oUsuario)
        {
            List<SqlParameter> parameterList = new List<SqlParameter>();

            parameterList.Add(new SqlParameter("@usuario", oUsuario.strUsername));
            parameterList.Add(new SqlParameter("@password", SqlInterface.Encriptar(oUsuario.strPassword)));
            parameterList.Add(new SqlParameter("@habilitado", oUsuario.blnHabilitado));
            return SqlInterface.ExecuteNonQuery("SQUIRTLE.spModificarUsuario", parameterList);
        }
    }
}
